It has become quite common for organizations to have networks spanning large areas with a large number of client devices. For example, many government, commercial and educational organizations have enterprise systems that include hundreds of client devices operating globally. The dispersed nature of such client devices makes distributing software a difficult and resource intensive task.
Software distribution for such client devices is often made according to a one-size-fits-all strategy. Under this strategy, identical software is distributed to all client devices regardless of actual requirements. In an office environment, this approach is often problematic as there may be users that reject the new software because they are already productive and familiar with old software. Similarly, advanced users may be deprived of the cutting edge tools provided in new software that they need for their own work. In a server environment, this approach also leads to difficulties as unnecessary patches are applied to client devices, affecting stability for no functional gain.